<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /* 
    使用function* 可以声明一个generator状态机对象,yield关键字用来定义一个个的状态
    调用generator函数后返回一个iterator对象,每次调用iterator对象上的next方法,可以执行一个yield后的状态
    */
    function* generator() {
      console.log(1);
      yield console.log(2);
      console.log(3);
    }
    // const gen = generator()
    // console.log(gen);
    // gen.next()
    // gen.next()

    //按顺序请求ABC数据
    function* generator1(){
      
      console.log('请求A数据');
      yield setTimeout(()=>{
        console.log('A数据请求成功')
        gen.next();
      },1000)
      console.log('请求B数据');
      yield setTimeout(()=>{
        console.log('B数据请求成功')
        gen.next();
      },1500)
      
      console.log('请求C数据');
      yield setTimeout(()=>{
        console.log('C数据请求成功');
      },2000)
    }
    const gen = generator1()
    gen.next()
  </script>
</body>

</html>